package com.luo.common.utils;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class QrCodeUtil {
    private static final Logger logger = LoggerFactory.getLogger(QrCodeUtil.class);
	/**
	 * 生成二维码
	 */
	public static void main(String[] args) {
        int width = 300;
        int height = 300;
        String format = "png";
        String content = "http://47.89.244.125/wx/register?userId=149";
        //定义二维码的参数
        HashMap map = new HashMap();
        //设置编码
        map.put(EncodeHintType.CHARACTER_SET, "utf-8");
        //设置纠错等级
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
        map.put(EncodeHintType.MARGIN, 2);

        try {
            //生成二维码
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height);
            Path file = new File("E:/develop/149.png").toPath();
            MatrixToImageWriter.writeToPath(bitMatrix, format, file);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
	
	public static String createQrcode(String content, String uploadPath, long userId) {
		int width = 300;
        int height = 300;
        String format = "png";
        //定义二维码的参数
        HashMap map = new HashMap();
        //设置编码
        map.put(EncodeHintType.CHARACTER_SET, "utf-8");
        //设置纠错等级
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
        map.put(EncodeHintType.MARGIN, 2);

        try {
            //生成二维码
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height);
            String fileName = String.valueOf(userId) + "." + format;
            Path file = new File(uploadPath + fileName).toPath();
            if (new File(uploadPath + fileName).exists()) {
            	new File(uploadPath + fileName).delete();
			}
            MatrixToImageWriter.writeToPath(bitMatrix, format, file);
            return fileName;
        } catch (WriterException e) {
        	e.printStackTrace();
        	logger.error("生成用户" + userId + "的二维码失败WriterException");
        } catch (IOException e) {
        	e.printStackTrace();
            logger.error("生成用户" + userId + "的二维码失败IOException");
        }
        return null;
	}
}
